Constructor Functions এবং Object Inheritance

Database Tutorials - পিএল/এসকিউএল (PL/SQL) PL/SQL Object Types এবং Object-Oriented Features |
153
153

PL/SQL-এ Object-Oriented Programming (OOP) এর ধারণা ব্যবহার করে আপনি Object Types তৈরি করতে পারেন, যা ক্লাসের মত আচরণ করে। এতে constructor functions এবং object inheritance দুটি গুরুত্বপূর্ণ ধারণা রয়েছে।

১. Constructor Functions

Constructor Functions হল বিশেষ ধরনের ফাংশন যা একটি Object Type ইনস্ট্যান্স (অবজেক্ট) তৈরি করতে ব্যবহৃত হয়। এগুলি পদ্ধতিগতভাবে একটি ক্লাসের কনস্ট্রাক্টরের মতো কাজ করে। যখন আপনি একটি নতুন অবজেক্ট তৈরি করেন, তখন কনস্ট্রাক্টর ফাংশনটি সেই অবজেক্টটির প্রাথমিক মান প্রদান করে।

PL/SQL-এ কনস্ট্রাক্টর ফাংশন সাধারণত INITIALIZE নামের থাকে (যদিও এটি যে কোনো নাম হতে পারে), এবং এটি Object Type এর এক বা একাধিক ফিল্ডে প্রাথমিক মান সেট করে।

Syntax:

TYPE object_type IS OBJECT (
   field1 datatype,
   field2 datatype,
   CONSTRUCTOR FUNCTION initialize (value1 datatype, value2 datatype)
      RETURN OBJECT_TYPE
);

উদাহরণ:

-- Object Type Definition
CREATE OR REPLACE TYPE person_type IS OBJECT (
   first_name VARCHAR2(50),
   last_name VARCHAR2(50),
   
   -- Constructor Function
   CONSTRUCTOR FUNCTION person_type (fname VARCHAR2, lname VARCHAR2) 
      RETURN SELF AS RESULT
);
/

-- Constructor Function Implementation
CREATE OR REPLACE TYPE BODY person_type IS
   -- Constructor Implementation
   CONSTRUCTOR FUNCTION person_type (fname VARCHAR2, lname VARCHAR2)
      RETURN SELF AS RESULT IS
   BEGIN
      self.first_name := fname;
      self.last_name := lname;
      RETURN;
   END;
END;
/

এখানে, person_type নামে একটি Object Type তৈরি করা হয়েছে। এর কনস্ট্রাক্টর ফাংশন person_type নামে এবং first_name এবং last_name ফিল্ডে প্রাথমিক মান সেট করে।

Object Instantiation:

DECLARE
   person1 person_type;
BEGIN
   -- Create an object using constructor
   person1 := person_type('John', 'Doe');
   DBMS_OUTPUT.PUT_LINE('Name: ' || person1.first_name || ' ' || person1.last_name);
END;

এখানে, person_type অবজেক্ট টাইপের একটি নতুন ইনস্ট্যান্স person1 তৈরি করা হয়েছে এবং কনস্ট্রাক্টর ফাংশন ব্যবহার করে প্রথম এবং শেষ নাম সেট করা হয়েছে।


২. Object Inheritance

Object Inheritance হল এক ধরনের বৈশিষ্ট্য যেখানে একটি অবজেক্ট টাইপ অন্য একটি অবজেক্ট টাইপ থেকে বৈশিষ্ট্য (ফিল্ড এবং ফাংশন) উত্তরাধিকারসূত্রে পায়। এই পদ্ধতির মাধ্যমে আপনি একটি সাধারণ অবজেক্ট টাইপ তৈরি করতে পারেন এবং তারপর সেটি থেকে অন্যান্য অবজেক্ট টাইপ তৈরি করতে পারেন।

PL/SQL-এ, Object Inheritance ব্যবহার করার জন্য UNDER কীওয়ার্ডটি ব্যবহার করা হয়, যার মাধ্যমে একটি অবজেক্ট টাইপ অন্য একটি টাইপ থেকে ইনহেরিট করে।

Syntax:

TYPE child_object_type UNDER parent_object_type (
   -- Additional fields or methods
);

উদাহরণ:

-- Parent Object Type
CREATE OR REPLACE TYPE person_type IS OBJECT (
   first_name VARCHAR2(50),
   last_name VARCHAR2(50),
   
   -- Constructor Function
   CONSTRUCTOR FUNCTION person_type (fname VARCHAR2, lname VARCHAR2)
      RETURN SELF AS RESULT
);
/

-- Parent Object Type BODY
CREATE OR REPLACE TYPE BODY person_type IS
   -- Constructor Function Implementation
   CONSTRUCTOR FUNCTION person_type (fname VARCHAR2, lname VARCHAR2)
      RETURN SELF AS RESULT IS
   BEGIN
      self.first_name := fname;
      self.last_name := lname;
      RETURN;
   END;
END;
/

-- Child Object Type Inheriting from person_type
CREATE OR REPLACE TYPE employee_type UNDER person_type (
   employee_id NUMBER,
   job_title VARCHAR2(50),
   
   CONSTRUCTOR FUNCTION employee_type (fname VARCHAR2, lname VARCHAR2, emp_id NUMBER, job VARCHAR2)
      RETURN SELF AS RESULT
);
/

-- Child Object Type BODY
CREATE OR REPLACE TYPE BODY employee_type IS
   -- Constructor Implementation
   CONSTRUCTOR FUNCTION employee_type (fname VARCHAR2, lname VARCHAR2, emp_id NUMBER, job VARCHAR2)
      RETURN SELF AS RESULT IS
   BEGIN
      -- Call the parent constructor
      person_type.initialize(fname, lname);  -- Calling the parent constructor
      self.employee_id := emp_id;
      self.job_title := job;
      RETURN;
   END;
END;
/

এখানে, employee_type হল একটি child object type যা person_type (parent object type) থেকে ইনহেরিট করেছে। এই child type এ নতুন দুটি ফিল্ড (employee_id এবং job_title) রয়েছে, এবং একটি কনস্ট্রাক্টর ফাংশন employee_type তৈরি করা হয়েছে যা parent type এর কনস্ট্রাক্টরকে কল করে।

Object Instantiation with Inheritance:

DECLARE
   emp1 employee_type;
BEGIN
   -- Create an object of the child type using constructor
   emp1 := employee_type('John', 'Doe', 101, 'Manager');
   DBMS_OUTPUT.PUT_LINE('Employee Name: ' || emp1.first_name || ' ' || emp1.last_name);
   DBMS_OUTPUT.PUT_LINE('Employee ID: ' || emp1.employee_id);
   DBMS_OUTPUT.PUT_LINE('Job Title: ' || emp1.job_title);
END;

এখানে, employee_type অবজেক্টের একটি ইনস্ট্যান্স emp1 তৈরি করা হয়েছে এবং এর মাধ্যমে first_name, last_name, employee_id, এবং job_title প্রোপার্টি অ্যাক্সেস করা হয়েছে।


Summary:

  • Constructor Functions: PL/SQL-এ কনস্ট্রাক্টর ফাংশনগুলি একটি Object Type এর ইনস্ট্যান্স তৈরি করার জন্য ব্যবহৃত হয় এবং এতে প্রাথমিক মান প্রদান করা হয়।
  • Object Inheritance: PL/SQL-এ একটি Object Type অন্য একটি Object Type থেকে বৈশিষ্ট্য (ফিল্ড এবং ফাংশন) ইনহেরিট করতে পারে, যা আপনাকে কোডের পুনরায় ব্যবহারযোগ্যতা এবং নমনীয়তা প্রদান করে।

PL/SQL-এ object types, constructor functions এবং inheritance এর মাধ্যমে আপনি আধুনিক Object-Oriented Principles প্রয়োগ করে আপনার ডেটাবেস অ্যাপ্লিকেশন তৈরি করতে পারবেন।

Content added By
Promotion